package com.jic.member.service;

import com.jic.common.base.vo.Page;
import com.jic.common.base.vo.PageResult;
import com.jic.common.base.vo.RestResult;
import com.jic.member.entity.TLabel;
import com.jic.member.request.TGroupLabelRelationRequest;
import com.jic.member.request.TLabelAddedRequest;
import com.jic.member.response.TLabelGradeResponse;
import com.jic.member.response.TLabelResponse;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * TLabel表
 *
 * @author : 建投数据
 * @version : v1.0.0
 * @email :
 * @since : 2020-03-21 10:12:20
 */
public interface TLabelService {

    /**
     * 保存接口
     * @param request 保存入参
     * @return int 是否保存成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    int save(TLabel request) ;

    /**
     * 保存或修改接口
     * @param request 保存或修改入参
     * @return int 是否保存或修改成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    int saveOrUpdate(TLabel request) ;

    /**
     * 删除接口
     * @param request 删除入参
     * @return int 是否物理删除成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    int deleteByPrimaryKey(TLabel request) ;

    /**
     * 删除接口
     * @param request 删除入参
     * @return int 是否逻辑删除成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    int deleteByPrimaryKeyLogically(TLabel request) ;

    /**
     * 修改
     *
     * @param request 修改入参实体类
     * @return int 是否修改成功
     */
    int updateByPrimaryKeySelective(TLabel request) ;

    /**
     * 详情
     *
     * @param request 详情查询实体类
     * @return TLabel数据库查询返回的实体类
     *  @auther
     */
    TLabel getByPrimaryKey(TLabel request);


    /**
     * 不分页查询
     *
     * @param request 查询入参实体类
     * @return 实体类列表
     */
    List<TLabel> listAllRecord(TLabel request);

    /**
     * 分页查询
     *
     * @param request 入参查询实体类
     * @return 数据库查询到的,分页后的实体类列表
     */
    PageResult<TLabelResponse> listPageBySelective(TLabel request, Page page);


    /**
     * 分页查询
     *
     * @param request 入参查询实体类
     * @return 数据库查询到的,分页后的实体类列表
     */
    PageResult<TLabelResponse> queryCustomLabelPage(TLabel request, Page page);


    /**
     * 子平台入驻默认分配母平台全部标签
     * @param deptId 保存入参
     * @return true 保存成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    RestResult saveLabelForSubPlatformEntry(Long deptId);


    /**
     * 会员等级值新增修改
     * @param map 保存入参
     * @return true 保存成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    RestResult saveLabelMemberGradeValue(Map<String, Object> map);



    /**
     * 商家店铺新增同步子平台标签数据
     *
     * @param deptId,merchantId
     * @return
     * author 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:54:04
     */
    RestResult saveLabelMerchantOrStore(Long deptId, Long merchantOrStoreDeptId);

    /**
     * 查询用户组的二三级标签
     * @param tGroupLabelRelationRequest 保存入参
     * @return true 保存成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    RestResult<List<TLabelGradeResponse>> queryGroupLabelByDeptId(TGroupLabelRelationRequest tGroupLabelRelationRequest);


    /**
     * 查询用户组的一二级标签
     * @param tGroupLabelRelationRequest 保存入参
     * @return true 保存成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    RestResult<List<TLabelGradeResponse>> queryLabelByDeptId(TGroupLabelRelationRequest tGroupLabelRelationRequest);


    /**
     *通过性别定时调用 调用会员数据
     * @param
     * @return
     * @auther
     * @date 2020-3-11 20:58:44
     */
    RestResult<Boolean> getMemberInfoBySex();

    /**
     *通过会员等级定时调用会员数据
     * @param
     * @return
     * @auther
     * @date 2020-3-11 20:58:44
     */
    RestResult<Boolean> getMemberInfoByMemberGrade();


    /**
     *通过会员类型定时调用会员数据
     * @param
     * @return
     * @auther
     * @date 2020-3-11 20:58:44
     */
    RestResult<Boolean> getMemberInfoByMemberType();


    /**
     *通过年龄定时调用会员数据
     * @param
     * @return
     * @auther
     * @date 2020-3-11 20:58:44
     */
    RestResult<Boolean> getMemberInfoByAge();


    /**
     *通过自定义标签调用会员数据
     * @param
     * @return
     * @auther
     * @date 2020-3-11 20:58:44
     */
    RestResult<Boolean> getMemberInfoByCustomLabel();


    /**
     * 自定义标签同步
     * @param
     * @return
     * @auther
     * @date 2020-3-11 20:58:44
     */
    RestResult saveCustomLabel(HashMap map);


    /**
     * 查询部门的所有标签数据
     * @param request 保存入参
     * @return true 保存成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    PageResult<TLabelResponse> queryAllLabelByDeptId(TLabel request, Page page);


    /**
     * 查询已经添加的标签
     * @param request 保存入参
     * @return true 保存成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    PageResult<TLabelResponse> queryAddedLabel(TLabelAddedRequest request, Page page);

}

